﻿using System;
using System.Windows;
using PureMVC.Interfaces;
using GameEngine.Model.Data;
using System.Collections.Generic;

namespace GameEngine.Model
{
    public class ILevelDataProxyConstants<ItemVOId>
        where ItemVOId : IComparable<ItemVOId>
    {
        //public const string THINGCHANGED_NOTIFICATION = "ThingDataProxyChanged";
        //public const string THINGCHANGEDHEIGHT_NOTIFICATIONTYPE = "ThingDataProxyHeightChanged";
        //public const string MAPPOSITIONCHANGED_NOTIFICATIONTYPE = "DataProxyMapPositionChanged";
        //public const string THINGCHANGEDPOSITION_NOTIFICATIONTYPE = "ThingDataProxyPositionChanged";
        public static string CreateDataProxyName(ILevelVOId levelName)
        {
            return levelName.Value + "_levelDataProxy";
        }

        public static string CreateDataProxyName(ILevelVO<ItemVOId> level)
        {
            return CreateDataProxyName(level.Id);
        }
    }
    public interface ILevelDataProxy<ItemVOId> : IDataProxy
        where ItemVOId : IComparable<ItemVOId>
    {
        bool Paused { get; set; }
        string LevelName { get; set; }
        ILevelVO<ItemVOId> VO { get; }

        IDictionary<IWorldVOId,IWorldDataProxy<ItemVOId>> Worlds { get; }

        bool HasEnded();
    }    
}